---
title: "IoT"
description:  "The Internet of Things (IoT) refers to devices with sensors, software, and tech that connect and exchange data with other systems via the internet or communication networks."
date: "2024-09-10"
author:
  name: "Chong Shen Ng"
  position: "Research Engineer @ Flower Labs"
  website: "https://discuss.flower.ai/u/chongshenng"
  github: "github.com/chongshenng"
related: 
  - text: "Edge Computing"
    link: "/glossary/edge-computing"
  - text: "Run Flower using Docker"
    link: "/docs/framework/docker/index.html"
  - text: "Flower Clients in C++"
    link: "/docs/examples/quickstart-cpp.html"
  - text: "Federated Learning on Embedded Devices with Flower"
    link: "/docs/examples/embedded-devices.html"
  - text: "Cisco: Redefine Connectivity by Building a Network to Support the Internet of Things"
    link: "https://www.cisco.com/c/en/us/solutions/service-provider/a-network-to-support-iot.html"
---

### Introduction to IoT

The Internet of Things (IoT) describe devices with sensors, processing ability, software, and other technologies that connect and exchange data with other devices and systems over the Internet or other communications networks. IoT is often also referred as Machine-to-Machine (M2M) connections. Examples of IoT include embedded systems, wireless sensor networks, control systems, automation (home and building). In the consumer market, IoT technology is synonymous with smart home products. The IoT architecture bears resemblance to edge computing, but more broadly encompasses edge devices, gateways, and the cloud.

### Use cases in Federated Learning

From the perspective of federated learning, IoT systems provide two common configurations: first as a data source for training, and second as a point for running inference/analytics.

Cisco's Global Cloud Index estimated that nearly 850 Zettabytes (ZB) of data will be generated by all people, machines and things in 2021 ([link](https://www.cisco.com/c/en/us/solutions/service-provider/a-network-to-support-iot.html) to article). In IoT, the data is different because not all of the data needs to be stored and instead, the most impactful business values come from running computations on the data. This positions IoT as an ideal candidate for implementing federated learning systems, where a model trained on a datastream from a single device may not be useful, but when trained collaboratively on hundreds or thousands of devices, yields a better performing and generalisable model. The key benefit is that the generated data remains local on the device and can even be offloaded after multiple rounds of federated learning. Some examples are presented below.

Once a model is trained (e.g. in a federated way), the model can be put into production. What this means is to deploy the model on the IoT device and compute predictions based on the newly generated/acquired data. 

Federated learning in IoT can be organized on two axes: by industry and by use cases.

For industry applications, examples include:
1. Healthcare - e.g. vital sign, activity levels, or sleep pattern monitoring using fitness trackers.
2. Transportation - e.g. trajectory prediction, object detection, driver drowsiness detection using on-board sensors and cameras.

For use cases, examples include:
1. Predictive maintenance - e.g. using data acquired from physical sensors (impedance, temperature, vibration, pressure, viscosity, etc ...)
2. Anomaly detection - e.g. using environmental monitoring sensors for predicting air, noise, or water pollution, using internet network traffic data for network intrusion detection, using fiber optic sensors for remote sensing and monitoring, etc ...
3. Quality assurance and quality control - e.g. using in-line optical, acoustic, or sensor data during manufacturing processes to identify faulty products, etc ...

### Using Flower for Federated Learning with IoT

Flower is developed with a deployment engine that allows you to easily deploy your federated learning system on IoT devices. As a Data Scientist/ML Engineer, you will only need to write ClientApps and deploy them to IoT devices without needing to deal with the infrastructure and networking. To further help deployment, we provide [Docker images](https://hub.docker.com/u/flwr) for the SuperLink, SuperNode, and ServerApp so that you can easily ship the requirements of your Flower applications in containers in a production environment. Lastly, Flower supports the development of both Python and C++ clients, which provides developers with flexible ways of building ClientApps for resource-contrained devices.
